package saltocaballo;

import aima.search.framework.HeuristicFunction;

public class SaltoCaballoHeuristicFunction implements HeuristicFunction{

	@Override
	public double getHeuristicValue(Object state) {
		SaltoCaballoEstado estado = (SaltoCaballoEstado) state;
		
		int h = 200;
		
		for (int i=0; i < estado.getAlto(); i++)
			for (int j=0; j < estado.getAncho(); j++)
				if (estado.getPosicion(i, j) == SaltoCaballoEstado.OCUPADO){
					if (i == 0 || i == estado.getAlto() - 1 ||
						j == 0 || j == estado.getAncho() - 1)
						h -= 4;
					else if (i == 1 || i == estado.getAlto() - 2 ||
							 j == 1 || j == estado.getAncho() - 2)
						h -=3;
					else if (i == 2 || i == estado.getAlto() - 3 ||
							 j == 2 || j == estado.getAncho() - 3)
						h -=2;
					else h--;
				}
		
		return h;
	}

}
